Loading...
 

Algorithm of adaptation of triangular and tetrahedral elements

In the case of triangular or tetrahedral meshes, it is possible to refine the meshes in order to increase the accuracy of the approximation over these meshes. The mesh densification algorithm is called the adaptation algorithm. It must be constructed in such a way as not to damage the properties of the original mesh, for example, that the elements do not become more and more "elongated" as a result of adaptation, which would disrupt the proportion between the mesh edges and the possibility of generating long thin elements for which calculating the integral gives very small numbers, of the order 0.000001 or less. This, in turn, would cause numerical errors in the factorization of the system of equations of the finite element method.
The algorithm for adapting triangular meshes maintaining the proportions of elements was proposed by Maria Cecilia Rivara [1].
It is described in pseudocode, and illustrated in Fig. 1.


1 procedure BREAK (triangle t)

2 e = longest edge of triangle t
3 if e is located on the boundary of the mesh, then break t from the interior of the longest edge to the opposite vertex, and return
4 t' = triangle on the other side of ege e
5 if e!=e' then BREAK(t')
6 t* = new element on the other side of edge e
7 break t and t* from the longest edge to the oppositevertex

Exemplary application of the Rivara algorithm breaking triangular elements.
Figure 1: Exemplary application of the Rivara algorithm breaking triangular elements.

According to panel (a), our goal is to break the element located in the upper left corner of the mesh. So, we call the procedure BREAK (t1). The algorithm finds the longest edge e1 of the element, and identifies its longest edge (panel (b) in red). This edge is not on the boundary, so we pull out element t2 on the other side of the edge and find its longest edge e2 (panel (c) marked in blue). Since the edge e1 is not equal to the edge e2, we recursively call the procedure BREAK (t2). The procedure finds the longest edge of the element (panel (c) marked in blue) and because it is not located on the edge, the situation repeats: we identify the element t3 on the other side and its longest edge e3 (panel (d) marked in green). Since this edge is not equal to the blue edge, we recursively call it BREAK (t3). The longest edge of the t3 element is the green edge e3, it is not located on the edge, and on its other side there is an element t4 (panel (e)) whose longest edge is also the green edge e3. So we break the elements t3 and t4 from the longest edge to the opposite vertex (panel (f)). We go back to the previous call to the BREAK procedure, back to the element t2. The new element on the other side of longest edge e2 is the element t4 (panel (g)). So we break the elements t2 and t4 from the longest edge to the vertex opposite. We go back to our previous call to BREAK, back to element t1. The new element on the other side of the longest edge e1 is the element t5 (panel (s)). So we break the elements t1 and t5 from the longest edge to the vertex opposite (panel (j)).

Ostatnio zmieniona Piątek 08 z Październik, 2021 09:28:09 UTC Autor: Maciej Paszynski
Zaloguj się/Zarejestruj w OPEN AGH e-podręczniki
Czy masz już hasło?

Hasło powinno mieć przynajmniej 8 znaków, litery i cyfry oraz co najmniej jeden znak specjalny.

Przypominanie hasła

Wprowadź swój adres e-mail, abyśmy mogli przesłać Ci informację o nowym haśle.
Dziękujemy za rejestrację!
Na wskazany w rejestracji adres został wysłany e-mail z linkiem aktywacyjnym.
Wprowadzone hasło/login są błędne.